export const isObject = (obj) => {
  return typeof obj === 'object' && obj !== null && obj !== undefined;
}
export const extend = Object.assign;

export const isArray = Array.isArray;

export const isFunction = v => typeof v === 'function';

export const isNumber = v => typeof v === 'number';

export const isBoolean = v => typeof v === 'boolean';

export const isString = v => typeof v === 'string';

export const isIntegerKey = k => parseInt(k, 10) + '' === k;

export const hasOwn = (target, key) => Object.prototype.hasOwnProperty.call(target, key);

export const hasChanged = (o, n) => o !== n;